package com.smallA.association.service;

import com.smallA.association.bo.Result;
import com.smallA.association.pojo.Association;
import com.smallA.association.pojo.Client;
import com.smallA.association.pojo.Student;
import com.smallA.association.vo.RegistrationData;
import org.springframework.security.core.userdetails.UserDetailsService;

import java.util.List;

/**
 * 用户操作业务逻辑接口
 *
 * @author wanda
 */
public interface UserService extends UserDetailsService {

    /**
     * 发送验证邮件用方法
     *
     * @param address 对应的邮箱地址
     * @return 返回验证码
     */
    Result<String> getCode(String address);

    /**
     * 账号注册用
     *
     * @param data 注册对应的信息
     * @return 返回注册成功与否, 一般来说成功就提交下告诉他你的账号正在审核
     */
    Result<String> registeredAssociation(RegistrationData data);

    /**
     * 团委验证账号
     *
     * @param client 用户信息
     * @return 返回结果
     */
    Result<String> checkUsername(Client client);

    /**
     * 通过传入的社团类的id来通过对应的用户状态
     *
     * @param list 传入的要修改的集合
     * @return 返回修改结果
     */
    Result<Object> updateUserState(List<Association> list);

    /**
     * 通过传入的学生信息类的id来导出
     *
     * @param list 传入的要导出的id的集合
     * @return 返回导出结果
     */
    Result<Object> exportExcel(List<Student> list);

    /**
     *  通过社团名字查找报名该社团的列表
     * @param user 用户对象
     * @param name 社团名字
     * @return
     */
    Result<Object> selectUserByAssociation(Client user, String name);

    /**
     * 通知结果
     * @param list
     * @param information 通知的消息内容
     * @return
     */
    Result<Object> noticeByEmail(List<Student> list, String information);

}
